###Exerccio 7_b

##de Regresso Mltipla
##Galileu estava Certo?

##Partindo do tutorial Ajuste de Polinmios, avalie se um polinmio de terceiro 
#grau  um melhor modelo para descrever os dados do experimento de Galileu. 
#A equao para este modelo :

#y=a+b*x+c*x^2+d*x^3


init.h = c(600, 700, 800, 950, 1100, 1300, 1500)
h.d = c(253, 337, 395, 451, 495, 534, 573)

plot(h.d~init.h)

mod1 <- lm(h.d~init.h)
mod2 <- update(mod1,.~. +I(init.h^2))
anova(mod1,mod2)
abline(mod1)
cf.m2 <- coef(mod2)
curve(cf.m2[1]+cf.m2[2]*x+cf.m2[3]*x^2, add=T, lty=2)
summary(mod2)

mod3 <- update(mod2,.~. +I(init.h^3))

cf.m3 <- coef(mod3)

curve(cf.m3[1]+cf.m3[2]*x+cf.m3[3]*x^2+cf.m3[4]*x^3, add=T, lty=3, col=2)

summary(mod3)

anova(mod2, mod3)
anova(mod1,mod3)

#Resposta: Neste caso um polinmio de terceiro grau se ajuda muito melhor. Isso  visvel graficamente, 
#j que a curva toca todos os pontos, diferentes da reta do modelo 1(primeiro grau) e da curva do modelo 2 
#(segundo grau). Alm disso, a anova mostra que os resduos diminuem muito (de 744.08 para 48.25), com o 
#modelo 3 (terceiro grau) e a significncia se mantm, com valor de p<0.05. 





##### EXERCICIO 7B- 2  Massa de Recm-Nascidos#######

#Experimente todas as variveis disponveis no conjunto de dados Massa ao Nascer
#e Dados da me para chegar ao melhor modelo de previso da massa de bebs ao 
#nascer.

##Antes de comear elimine as observaes com dados faltantes ,veja na descrio 
#do arquivo.

bebes<-read.table("babies.csv", header=TRUE, as.is=FALSE)

str(bebes)
head(bebes)
names(bebes)
#eliminar todas as linhas, 
#quando: 
#bwt= 999 
#gestation=999
#parity=9
#age= 99
#height=99
#weight=999
#smoke=9

bebes$bwt[bebes$bwt==999]<-NA

bebes$gestation[bebes$gestation==999]<-NA

bebes$parity[bebes$parity==9]<-NA 

bebes$age[bebes$age==99]<-NA

bebes$height[bebes$height==99]<-NA

bebes$weight[bebes$weight==999]<-NA

bebes$smoke[bebes$smoke==9]<-NA

#excluindo todos os NAs

bebes.2<-na.exclude(bebes)
bebes.2

#analise exploratoria:

plot(bebes.2)

#agora, temos que comear a testar a partir dos modelos mais simples: resposta bwt em funo de UMA varivel:


#bwt em funo de gestation
mod.12<-(lm(bebes.2$bwt~bebes.2$gestation))
summary(mod.12)  # r2: 0.16, p=<2e-16, 
anova(mod.12)

#bwt em funo de parity
mod.13<-lm(bebes.2$bwt~bebes.2$parity)
summary(mod.13)       #r2: 0.0010, p=0.132
anova(mod.13)

#bwt em funo de age
mod.14<-lm(bebes.2$bwt~bebes.2$age)
summary(mod.14)    #r2: -0.0001, p=0.3556
anova(mod.14)   

#bwt em funo de height
mod.15<-lm(bebes.2$bwt~bebes.2$height)
summary(mod.1)       #r2: 0.04, p=1.84e-12 ***
anova(mod.15)

#bwt em funo de weight
mod.16<-lm(bebes.2$bwt~bebes.2$weight)
summary(mod.16)       #r2: 0.02, p=7.887e-08
anova(mod.16)

#bwt em funo de smoke
mod.17<-lm(bebes.2$bwt~bebes.2$smoke)
summary(mod.17)       # r2= 0.06011 p-value: < 2.2e-16
anova(mod.17)

#j vi a significncia de todos os ajustes e verifiquei que a relao mais forte  a de peso do nenem com relao ao tempo de gestao: mod.12

# Mas e se houver auto-correlao entre oa fatores?

cor(bebes.2$gestation, bebes.2$parity)
cor(bebes.2$gestation, bebes.2$age)
cor(bebes.2$gestation, bebes.2$height)
cor(bebes.2$gestation, bebes.2$weight)
cor(bebes.2$gestation, bebes.2$smoke)
cor(bebes.2$age, bebes.2$parity)
cor(bebes.2$height, bebes.2$parity)
cor(bebes.2$weight, bebes.2$parity)
cor(bebes.2$smoke, bebes.2$parity)
cor(bebes.2$age, bebes.2$height)
cor(bebes.2$age, bebes.2$weight)
cor(bebes.2$age, bebes.2$smoke)
cor(bebes.2$height, bebes.2$weight)
cor(bebes.2$height, bebes.2$smoke)
cor(bebes.2$smoke, bebes.2$weight)


#Apenas height e weight tem uma correlao mais expressiva: R=0.4353. Tenho que lembrar disso para no coloc-los em interao. 

#Agora preciso testar as interaes de fatores, com relao a esse modelo.

mod.123<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$parity)
summary(mod.123)  #r2: 0.17, p=0.00379 ** 
anova(mod.12,mod.123)  #resduo:se mantem

mod.124<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$age)
summary(mod.124)  #r2: 0,16, p=0.0672
anova(mod.12, mod.124) #resduo se mantem, p mantem

mod.125<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$height)
summary(mod.125)  #r2=0,1955, p= 3.266e-11
anova(mod.12, mod.125) #residuo diminui 1200, p aumenta

mod.126<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$weight)
summary(mod.126)    #r2= 0,1861, p= 3.43e-08
anova(mod.12, mod.126)   #residuo diminui 8000, p aumenta

mod.127<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$smoke)
summary(mod.127) #r2=0,2143, p= < 2.2e-16
anova(mod.12, mod.127)    #residuo diminui 19000, p continua igual

#Pela anlise de diferena dos residuos, vejo que o melhor modelo agora  o mod.127. Continuarei a partir dele. 
#Acrescentarei  relao os fatores que ainda no contribuiram: parity, age, height, weight

mod.1273<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$smoke+bebes.2$parity)
summary(mod.1273)      #r2= 0,2198
anova(mod.127, mod.1273)   #residuo:diminuiu apenas 3000, p aumentou


mod.1274<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$smoke+bebes.2$age)
summary(mod.1274)                      #r2=0,2147
anova(mod.127, mod.1274)          #residuo diminui 1000, p= 0,2017

mod.1275<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$smoke+bebes.2$height)
summary(mod.1275)                      #r2=0,2463
anova(mod.127, mod.1275)         #residuo diminui13000, p aumenta mas  sig.

mod.1276<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$smoke+bebes.2$weight)
summary(mod.1276)        #r2=0,2315
anova(mod.127, mod.1276)      #residuo= varia 7000, p aumenta, mas  sig

# O fator que diminui mais o residuo  a altura da me. E tambm  o maior r2. 

#Assim, continuamos para os demais fatores, em busca de incrementar mais ainda o modelo. 

#Como age no tem mostrado uma relao significativa com o modelo, excluirei esse fator das comparaes. 
#Falta ainda: parity e weight

mod.12753<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$smoke+bebes.2$height+bebes.2$parity)
summary(mod.12753)                     
anova(mod.1275, mod.12753)    #nao varia o residuo, p diminui, mas ainda sig

mod.12756<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$smoke+bebes.2$height+bebes.2$weight)
summary(mod.12756)                     
anova(mod.1275, mod.12756)      #nao varia o residuo, p= 0,01

#Nenhum dos dois novos modelos melhoram tanto o modelo, que valha a pena perder graus de liberdade.

#Devo testar agora os modelos em interao, e comparar com o melhor at agora: mod.1275 
#(mod.1275<-lm(bebes.2$bwt~bebes.2$gestation+bebes.2$smoke+bebes.2$height))

#Como bwt~gestation  o melhor, vou interagir os outros um a um. 

mod.12.3<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$parity))
summary(mod.12.3)
anova(mod.1275, mod.12.3)    # aumentou o residuo. no significativo

mod.12.4<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$age))
summary(mod.12.4)
anova(mod.1275, mod.12.4)     # aumentou o residuo.  no significativo

mod.12.5<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$height))
summary(mod.12.5)
anova(mod.1275, mod.12.5)            # aumentou o residuo. no significativo

mod.12.6<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$weight))
summary(mod.12.6)
anova(mod.1275, mod.12.6)           # aumentou o residuo. diminui prob

mod.12.7<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke))
summary(mod.12.7)
anova(mod.1275, mod.12.7)               # aumentou o residuo. 

#Como nenhum modelo diminuiu os resduos, o melhor modelo ainda  o mod.1275 

#Vou tentar aumentar as relaes. 

mod.12.34<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$parity*bebes.2$age))
summary(mod.12.34)
anova(mod.1275, mod.12.34)    # aumentou o residuo. significativo

mod.12.35<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$parity*bebes.2$height))
summary(mod.12.35)
anova(mod.1275, mod.12.35)     # aumentou o residuo.  no significativo

mod.12.36<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$parity*bebes.2$weight))
summary(mod.12.36)
anova(mod.1275, mod.12.36)            # aumentou o residuo. no significativo

mod.12.37<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$parity*bebes.2$smoke))
summary(mod.12.37)
anova(mod.1275, mod.12.37)           # aumentou o residuo. diminui prob

#Bem, nenhuma dessas relaes foi significativa, quando em conjunto. E todas elas aumentaram os residuos, o que me mostra que o ajuste diminuiu. 

#Vou testar todas as relaes para smoke, pois foi uma das relaes mais significativas:

mod.12.73<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$parity))
summary(mod.12.73)
anova(mod.1275, mod.12.73) 

mod.12.74<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$age))
summary(mod.12.74)
anova(mod.1275, mod.12.74) 

mod.12.75<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$height))
summary(mod.12.75)
anova(mod.1275, mod.12.75)    #diminuiu o residuo! e p  significativo

mod.12.76<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$weight))
summary(mod.12.76)
anova(mod.1275, mod.12.76) 

#J que apenas o modelo mod.12.75 abaixou o residuo, vamos increment-lo e agora ele seguir como sendo o primeio modelo da anova

mod.12.753<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$height*bebes.2$parity))
summary(mod.12.753)
anova(mod.12.75, mod.12.753)    #diminuiu o residuo, mas p=0.03557

mod.12.754<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$height*bebes.2$age))
summary(mod.12.754)
anova(mod.12.75, mod.12.754)    #diminui o residuo, mas p=0.01

mod.12.756<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$height*bebes.2$weight))
summary(mod.12.756)
anova(mod.12.75, mod.12.756)     #no pode, pq h colinearidade entre height e weight.


# Sigo ento com o modelo 12.753

mod.12.7534<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$height*bebes.2$parity*bebes.2$age))
summary(mod.12.7534)
anova(mod.12.753,mod.12.7534)  #diminui o residuo, e o p=0.0477. 

# Por critrio de parcimnia, onde o melhor modelo ser aquele que diminuir o valor dos residuos e ainda manter o p significativo (p<0.05), o modelo que eu escolho  o 
#mod.12.7534<-(lm(bebes.2$bwt~bebes.2$gestation*bebes.2$smoke*bebes.2$height*bebes.2$parity*bebes.2$age))

